package cn.com.surker.util;

import cn.com.surker.common.Constant;

import java.io.File;

import static cn.com.surker.common.Constant.IMG_SUFFIX;

/**
 * 文件操作工具类
 * @author luotao
 * @date 2022/11/3
 */
public class FileUtils {

	//	文件分割符号
	public static final String FILE_SEG = "/";

	/**
	 * 获取文件后缀
	 * @param fileName
	 * @return
	 */
	public static String getFileSuffix(String fileName){
		if(StringUtils.isBlank(fileName)){
			return "";
		}
		// 获取文件格式
		String[] split = fileName.split("\\.");
		if(split.length < 2){
			return "";
		}
		String fileSuffix = split[split.length - 1];
		return fileSuffix;
	}

	/**
	 * 根据文件后缀，判断是否图片
	 * @param fileSuffix		文件后缀
	 * @return
	 */
	public static Boolean isImage(String fileSuffix){
		if(StringUtils.isBlank(fileSuffix)){
			return false;
		}
		String fs = fileSuffix.toUpperCase();
		String[] imgs = Constant.IMG_SUFFIX;
		for(int i = 0,s = imgs.length;i < s;i++){
			String img = imgs[i];
			if(img.indexOf(fs) > -1){
				return true;
			}
		}
		return false;
	}

	/**
	 * 删除文件,如果是文件夹,则会删除文件夹下的文件以及文件夹本身
	 * @param filePath			文件路径
	 * @return
	 * @throws Exception
	 */
	public static Boolean deleteFile(String filePath){
		if(StringUtils.isBlank(filePath)){
			return false;
		}
		File file = new File(filePath);
		boolean delete = deleteFile(file);
		return delete;
	}

	public static Boolean deleteFile(File file){
		if(file == null || !file.exists()){
			return false;
		}
		if(file.isDirectory()){
			File[] files = file.listFiles();
			for (File file1 : files){
				deleteFile(file1);
			}
		}
		// 删除本文件夹
		boolean delete = file.delete();
		return delete;
	}

	/**
	 * 获取没有后缀的文件名
	 * @param fileName
	 * @return
	 */
	public static String fileNotSuffix(String fileName){
		if (StringUtils.isBlank(fileName)){
			return "";
		}
		int lastIndexOfDot = fileName.lastIndexOf(".");
		if (lastIndexOfDot != -1) {
			String fileNameWithoutExtension = fileName.substring(0, lastIndexOfDot);
			return fileNameWithoutExtension;
		} else {
			return "";
		}
	}

	/**
	 * 判断文件目录是否存在,如果不存在,则创建目了
	 * @param dirPath
	 */
	public static void dirIsExist(String dirPath) {
		File dir = new File(dirPath);
		if (!dir.exists()) {
			dir.mkdirs();
		}

	}

}
